// $ANTLR 3.4 /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g 2013-05-20 19:00:38

package it.uniroma2.art.coda.pearl.parser.antlr;
	import it.uniroma2.art.coda.pearl.parser.antlr.AntlrParserRuntimeException;


import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

import org.antlr.runtime.tree.*;


@SuppressWarnings({"all", "warnings", "unchecked"})
public class AntlrParser extends Parser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "AST_ABBR", "AST_BINDINGS_CLAUSE", "AST_BINDING_DEFINITION", "AST_BLANK_NODE", "AST_CONVERTERS", "AST_DATATYPE", "AST_FEATURE_PATH", "AST_FEATURE_PATH_ELEMENT", "AST_GRAPH", "AST_GRAPH_CLAUSE", "AST_GRAPH_OBJECT", "AST_GRAPH_PREDICATE", "AST_GRAPH_SUBJECT", "AST_GRAPH_TRIPLE", "AST_ID", "AST_IRI_REF", "AST_JAVA_QUALIFIED_NAMED", "AST_LANG", "AST_LAZY_RULE", "AST_NODES_CLAUSE", "AST_NODES_DEF", "AST_OPTIONAL", "AST_PEARL_UNIT", "AST_PLACE_HOLDER", "AST_PREFIXED_NAME", "AST_PREFIX_DECLARATION", "AST_PROJECTION_OPERATOR", "AST_PROLOGUE", "AST_RULE", "AST_RULES", "AST_UIMA_TYPE_NAME", "AST_VAR", "AST_WHERE_CLAUSE", "AST_WHERE_OBJECT", "AST_WHERE_PREDICATE", "AST_WHERE_SUBJECT", "AST_WHERE_TRIPLE", "BLANK_NODE_LABEL", "COMMENT", "HEX", "INTEGER", "IRIREF", "JAVA_IDENTIFIER", "JAVA_LETTER", "JAVA_LETTER_OR_DIGIT", "LANGTAG", "MULTILINE_COMMENT", "NEWLINE", "PERCENT", "PLX", "PNAME_LN", "PNAME_NS", "PN_CHARS", "PN_CHARS_BASE", "PN_CHARS_U", "PN_LOCAL", "PN_LOCAL_ESC", "PN_PREFIX", "RULE_ID", "VAR1", "VAR2", "VARNAME", "WS", "'('", "')'", "','", "'.'", "'/'", "'='", "'OPTIONAL'", "'['", "']'", "'^^'", "'a'", "'bindings'", "'graph'", "'lazy'", "'literal'", "'nodes'", "'prefix'", "'rule'", "'uri'", "'where'", "'{'", "'}'"
    };

    public static final int EOF=-1;
    public static final int T__67=67;
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__70=70;
    public static final int T__71=71;
    public static final int T__72=72;
    public static final int T__73=73;
    public static final int T__74=74;
    public static final int T__75=75;
    public static final int T__76=76;
    public static final int T__77=77;
    public static final int T__78=78;
    public static final int T__79=79;
    public static final int T__80=80;
    public static final int T__81=81;
    public static final int T__82=82;
    public static final int T__83=83;
    public static final int T__84=84;
    public static final int T__85=85;
    public static final int T__86=86;
    public static final int T__87=87;
    public static final int T__88=88;
    public static final int AST_ABBR=4;
    public static final int AST_BINDINGS_CLAUSE=5;
    public static final int AST_BINDING_DEFINITION=6;
    public static final int AST_BLANK_NODE=7;
    public static final int AST_CONVERTERS=8;
    public static final int AST_DATATYPE=9;
    public static final int AST_FEATURE_PATH=10;
    public static final int AST_FEATURE_PATH_ELEMENT=11;
    public static final int AST_GRAPH=12;
    public static final int AST_GRAPH_CLAUSE=13;
    public static final int AST_GRAPH_OBJECT=14;
    public static final int AST_GRAPH_PREDICATE=15;
    public static final int AST_GRAPH_SUBJECT=16;
    public static final int AST_GRAPH_TRIPLE=17;
    public static final int AST_ID=18;
    public static final int AST_IRI_REF=19;
    public static final int AST_JAVA_QUALIFIED_NAMED=20;
    public static final int AST_LANG=21;
    public static final int AST_LAZY_RULE=22;
    public static final int AST_NODES_CLAUSE=23;
    public static final int AST_NODES_DEF=24;
    public static final int AST_OPTIONAL=25;
    public static final int AST_PEARL_UNIT=26;
    public static final int AST_PLACE_HOLDER=27;
    public static final int AST_PREFIXED_NAME=28;
    public static final int AST_PREFIX_DECLARATION=29;
    public static final int AST_PROJECTION_OPERATOR=30;
    public static final int AST_PROLOGUE=31;
    public static final int AST_RULE=32;
    public static final int AST_RULES=33;
    public static final int AST_UIMA_TYPE_NAME=34;
    public static final int AST_VAR=35;
    public static final int AST_WHERE_CLAUSE=36;
    public static final int AST_WHERE_OBJECT=37;
    public static final int AST_WHERE_PREDICATE=38;
    public static final int AST_WHERE_SUBJECT=39;
    public static final int AST_WHERE_TRIPLE=40;
    public static final int BLANK_NODE_LABEL=41;
    public static final int COMMENT=42;
    public static final int HEX=43;
    public static final int INTEGER=44;
    public static final int IRIREF=45;
    public static final int JAVA_IDENTIFIER=46;
    public static final int JAVA_LETTER=47;
    public static final int JAVA_LETTER_OR_DIGIT=48;
    public static final int LANGTAG=49;
    public static final int MULTILINE_COMMENT=50;
    public static final int NEWLINE=51;
    public static final int PERCENT=52;
    public static final int PLX=53;
    public static final int PNAME_LN=54;
    public static final int PNAME_NS=55;
    public static final int PN_CHARS=56;
    public static final int PN_CHARS_BASE=57;
    public static final int PN_CHARS_U=58;
    public static final int PN_LOCAL=59;
    public static final int PN_LOCAL_ESC=60;
    public static final int PN_PREFIX=61;
    public static final int RULE_ID=62;
    public static final int VAR1=63;
    public static final int VAR2=64;
    public static final int VARNAME=65;
    public static final int WS=66;

    // delegates
    public Parser[] getDelegates() {
        return new Parser[] {};
    }

    // delegators


    public AntlrParser(TokenStream input) {
        this(input, new RecognizerSharedState());
    }
    public AntlrParser(TokenStream input, RecognizerSharedState state) {
        super(input, state);
    }

protected TreeAdaptor adaptor = new CommonTreeAdaptor();

public void setTreeAdaptor(TreeAdaptor adaptor) {
    this.adaptor = adaptor;
}
public TreeAdaptor getTreeAdaptor() {
    return adaptor;
}
    public String[] getTokenNames() { return AntlrParser.tokenNames; }
    public String getGrammarFileName() { return "/home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g"; }


    @Override
    public void reportError(RecognitionException e) {
    	String msg = "Parser error";
    	if (e instanceof UnwantedTokenException) {
    		String text = ((UnwantedTokenException) e).getUnexpectedToken()
    				.getText();
    		int line = ((UnwantedTokenException) e).getUnexpectedToken().getLine();
    		int pos = ((UnwantedTokenException) e).getUnexpectedToken()
    				.getCharPositionInLine();
    		msg += " with text = " + text + " at line " + line + " and char " + pos;
    	} else if (e instanceof MismatchedTokenException) {
    		System.out
    				.println(((MismatchedTokenException) e).getLocalizedMessage()); // DEBUG
    	} else {
    		e.printStackTrace(); // DEBUG
    	}
    	//System.out.println("&&& Problem with text = "+text+" at line "+line+" and char "+pos); // da cancellare

    	System.out.println(msg); // DEBUG
    	throw new AntlrParserRuntimeException(msg);
    	//throw new IllegalArgumentException(e);
    }


    public static class pearlUnit_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "pearlUnit"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:113:1: pearlUnit : prologue rules -> ^( AST_PEARL_UNIT prologue rules ) ;
    public final AntlrParser.pearlUnit_return pearlUnit() throws RecognitionException {
        AntlrParser.pearlUnit_return retval = new AntlrParser.pearlUnit_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        AntlrParser.prologue_return prologue1 =null;

        AntlrParser.rules_return rules2 =null;


        RewriteRuleSubtreeStream stream_prologue=new RewriteRuleSubtreeStream(adaptor,"rule prologue");
        RewriteRuleSubtreeStream stream_rules=new RewriteRuleSubtreeStream(adaptor,"rule rules");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:114:3: ( prologue rules -> ^( AST_PEARL_UNIT prologue rules ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:115:3: prologue rules
            {
            pushFollow(FOLLOW_prologue_in_pearlUnit261);
            prologue1=prologue();

            state._fsp--;

            stream_prologue.add(prologue1.getTree());

            pushFollow(FOLLOW_rules_in_pearlUnit263);
            rules2=rules();

            state._fsp--;

            stream_rules.add(rules2.getTree());

            // AST REWRITE
            // elements: rules, prologue
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 116:3: -> ^( AST_PEARL_UNIT prologue rules )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:116:6: ^( AST_PEARL_UNIT prologue rules )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_PEARL_UNIT, "AST_PEARL_UNIT")
                , root_1);

                adaptor.addChild(root_1, stream_prologue.nextTree());

                adaptor.addChild(root_1, stream_rules.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "pearlUnit"


    public static class prologue_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "prologue"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:119:1: prologue : ( prefixDecl )* -> ^( AST_PROLOGUE ( prefixDecl )* ) ;
    public final AntlrParser.prologue_return prologue() throws RecognitionException {
        AntlrParser.prologue_return retval = new AntlrParser.prologue_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        AntlrParser.prefixDecl_return prefixDecl3 =null;


        RewriteRuleSubtreeStream stream_prefixDecl=new RewriteRuleSubtreeStream(adaptor,"rule prefixDecl");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:120:3: ( ( prefixDecl )* -> ^( AST_PROLOGUE ( prefixDecl )* ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:121:3: ( prefixDecl )*
            {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:121:3: ( prefixDecl )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==83) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:121:3: prefixDecl
            	    {
            	    pushFollow(FOLLOW_prefixDecl_in_prologue292);
            	    prefixDecl3=prefixDecl();

            	    state._fsp--;

            	    stream_prefixDecl.add(prefixDecl3.getTree());

            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            // AST REWRITE
            // elements: prefixDecl
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 122:3: -> ^( AST_PROLOGUE ( prefixDecl )* )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:122:6: ^( AST_PROLOGUE ( prefixDecl )* )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_PROLOGUE, "AST_PROLOGUE")
                , root_1);

                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:122:21: ( prefixDecl )*
                while ( stream_prefixDecl.hasNext() ) {
                    adaptor.addChild(root_1, stream_prefixDecl.nextTree());

                }
                stream_prefixDecl.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "prologue"


    public static class prefixDecl_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "prefixDecl"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:125:1: prefixDecl : 'prefix' PNAME_NS IRIREF -> ^( AST_PREFIX_DECLARATION PNAME_NS IRIREF ) ;
    public final AntlrParser.prefixDecl_return prefixDecl() throws RecognitionException {
        AntlrParser.prefixDecl_return retval = new AntlrParser.prefixDecl_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal4=null;
        Token PNAME_NS5=null;
        Token IRIREF6=null;

        Object string_literal4_tree=null;
        Object PNAME_NS5_tree=null;
        Object IRIREF6_tree=null;
        RewriteRuleTokenStream stream_PNAME_NS=new RewriteRuleTokenStream(adaptor,"token PNAME_NS");
        RewriteRuleTokenStream stream_IRIREF=new RewriteRuleTokenStream(adaptor,"token IRIREF");
        RewriteRuleTokenStream stream_83=new RewriteRuleTokenStream(adaptor,"token 83");

        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:126:3: ( 'prefix' PNAME_NS IRIREF -> ^( AST_PREFIX_DECLARATION PNAME_NS IRIREF ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:127:3: 'prefix' PNAME_NS IRIREF
            {
            string_literal4=(Token)match(input,83,FOLLOW_83_in_prefixDecl322);  
            stream_83.add(string_literal4);


            PNAME_NS5=(Token)match(input,PNAME_NS,FOLLOW_PNAME_NS_in_prefixDecl324);  
            stream_PNAME_NS.add(PNAME_NS5);


            IRIREF6=(Token)match(input,IRIREF,FOLLOW_IRIREF_in_prefixDecl326);  
            stream_IRIREF.add(IRIREF6);


            // AST REWRITE
            // elements: IRIREF, PNAME_NS
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 128:3: -> ^( AST_PREFIX_DECLARATION PNAME_NS IRIREF )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:128:6: ^( AST_PREFIX_DECLARATION PNAME_NS IRIREF )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_PREFIX_DECLARATION, "AST_PREFIX_DECLARATION")
                , root_1);

                adaptor.addChild(root_1, 
                stream_PNAME_NS.nextNode()
                );

                adaptor.addChild(root_1, 
                stream_IRIREF.nextNode()
                );

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "prefixDecl"


    public static class rules_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "rules"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:131:1: rules : (r+= rule |r+= lazyRule )+ -> ^( AST_RULES ( $r)+ ) ;
    public final AntlrParser.rules_return rules() throws RecognitionException {
        AntlrParser.rules_return retval = new AntlrParser.rules_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        List list_r=null;
        RuleReturnScope r = null;
        RewriteRuleSubtreeStream stream_lazyRule=new RewriteRuleSubtreeStream(adaptor,"rule lazyRule");
        RewriteRuleSubtreeStream stream_rule=new RewriteRuleSubtreeStream(adaptor,"rule rule");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:132:3: ( (r+= rule |r+= lazyRule )+ -> ^( AST_RULES ( $r)+ ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:133:3: (r+= rule |r+= lazyRule )+
            {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:133:3: (r+= rule |r+= lazyRule )+
            int cnt2=0;
            loop2:
            do {
                int alt2=3;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==84) ) {
                    alt2=1;
                }
                else if ( (LA2_0==80) ) {
                    alt2=2;
                }


                switch (alt2) {
            	case 1 :
            	    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:133:4: r+= rule
            	    {
            	    pushFollow(FOLLOW_rule_in_rules356);
            	    r=rule();

            	    state._fsp--;

            	    stream_rule.add(r.getTree());
            	    if (list_r==null) list_r=new ArrayList();
            	    list_r.add(r.getTree());


            	    }
            	    break;
            	case 2 :
            	    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:133:12: r+= lazyRule
            	    {
            	    pushFollow(FOLLOW_lazyRule_in_rules360);
            	    r=lazyRule();

            	    state._fsp--;

            	    stream_lazyRule.add(r.getTree());
            	    if (list_r==null) list_r=new ArrayList();
            	    list_r.add(r.getTree());


            	    }
            	    break;

            	default :
            	    if ( cnt2 >= 1 ) break loop2;
                        EarlyExitException eee =
                            new EarlyExitException(2, input);
                        throw eee;
                }
                cnt2++;
            } while (true);


            // AST REWRITE
            // elements: r
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: r
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
            RewriteRuleSubtreeStream stream_r=new RewriteRuleSubtreeStream(adaptor,"token r",list_r);
            root_0 = (Object)adaptor.nil();
            // 134:3: -> ^( AST_RULES ( $r)+ )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:134:6: ^( AST_RULES ( $r)+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_RULES, "AST_RULES")
                , root_1);

                if ( !(stream_r.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_r.hasNext() ) {
                    adaptor.addChild(root_1, stream_r.nextTree());

                }
                stream_r.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "rules"


    public static class rule_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "rule"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:137:1: rule : 'rule' uimaTypeName ( ruleId )? '{' ( bindingsClause )? ( nodesClause )? ( graphClause )? ( whereClause )? '}' -> ^( AST_RULE ( ^( AST_ID ruleId ) )? uimaTypeName ( bindingsClause )? ( nodesClause )? ( graphClause )? ( whereClause )? ) ;
    public final AntlrParser.rule_return rule() throws RecognitionException {
        AntlrParser.rule_return retval = new AntlrParser.rule_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal7=null;
        Token char_literal10=null;
        Token char_literal15=null;
        AntlrParser.uimaTypeName_return uimaTypeName8 =null;

        AntlrParser.ruleId_return ruleId9 =null;

        AntlrParser.bindingsClause_return bindingsClause11 =null;

        AntlrParser.nodesClause_return nodesClause12 =null;

        AntlrParser.graphClause_return graphClause13 =null;

        AntlrParser.whereClause_return whereClause14 =null;


        Object string_literal7_tree=null;
        Object char_literal10_tree=null;
        Object char_literal15_tree=null;
        RewriteRuleTokenStream stream_87=new RewriteRuleTokenStream(adaptor,"token 87");
        RewriteRuleTokenStream stream_84=new RewriteRuleTokenStream(adaptor,"token 84");
        RewriteRuleTokenStream stream_88=new RewriteRuleTokenStream(adaptor,"token 88");
        RewriteRuleSubtreeStream stream_bindingsClause=new RewriteRuleSubtreeStream(adaptor,"rule bindingsClause");
        RewriteRuleSubtreeStream stream_whereClause=new RewriteRuleSubtreeStream(adaptor,"rule whereClause");
        RewriteRuleSubtreeStream stream_ruleId=new RewriteRuleSubtreeStream(adaptor,"rule ruleId");
        RewriteRuleSubtreeStream stream_uimaTypeName=new RewriteRuleSubtreeStream(adaptor,"rule uimaTypeName");
        RewriteRuleSubtreeStream stream_nodesClause=new RewriteRuleSubtreeStream(adaptor,"rule nodesClause");
        RewriteRuleSubtreeStream stream_graphClause=new RewriteRuleSubtreeStream(adaptor,"rule graphClause");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:138:3: ( 'rule' uimaTypeName ( ruleId )? '{' ( bindingsClause )? ( nodesClause )? ( graphClause )? ( whereClause )? '}' -> ^( AST_RULE ( ^( AST_ID ruleId ) )? uimaTypeName ( bindingsClause )? ( nodesClause )? ( graphClause )? ( whereClause )? ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:139:3: 'rule' uimaTypeName ( ruleId )? '{' ( bindingsClause )? ( nodesClause )? ( graphClause )? ( whereClause )? '}'
            {
            string_literal7=(Token)match(input,84,FOLLOW_84_in_rule389);  
            stream_84.add(string_literal7);


            pushFollow(FOLLOW_uimaTypeName_in_rule391);
            uimaTypeName8=uimaTypeName();

            state._fsp--;

            stream_uimaTypeName.add(uimaTypeName8.getTree());

            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:139:23: ( ruleId )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==RULE_ID) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:139:23: ruleId
                    {
                    pushFollow(FOLLOW_ruleId_in_rule393);
                    ruleId9=ruleId();

                    state._fsp--;

                    stream_ruleId.add(ruleId9.getTree());

                    }
                    break;

            }


            char_literal10=(Token)match(input,87,FOLLOW_87_in_rule395);  
            stream_87.add(char_literal10);


            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:140:5: ( bindingsClause )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==78) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:140:5: bindingsClause
                    {
                    pushFollow(FOLLOW_bindingsClause_in_rule401);
                    bindingsClause11=bindingsClause();

                    state._fsp--;

                    stream_bindingsClause.add(bindingsClause11.getTree());

                    }
                    break;

            }


            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:141:5: ( nodesClause )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==82) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:141:5: nodesClause
                    {
                    pushFollow(FOLLOW_nodesClause_in_rule408);
                    nodesClause12=nodesClause();

                    state._fsp--;

                    stream_nodesClause.add(nodesClause12.getTree());

                    }
                    break;

            }


            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:142:5: ( graphClause )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==79) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:142:5: graphClause
                    {
                    pushFollow(FOLLOW_graphClause_in_rule415);
                    graphClause13=graphClause();

                    state._fsp--;

                    stream_graphClause.add(graphClause13.getTree());

                    }
                    break;

            }


            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:143:5: ( whereClause )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==86) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:143:5: whereClause
                    {
                    pushFollow(FOLLOW_whereClause_in_rule422);
                    whereClause14=whereClause();

                    state._fsp--;

                    stream_whereClause.add(whereClause14.getTree());

                    }
                    break;

            }


            char_literal15=(Token)match(input,88,FOLLOW_88_in_rule427);  
            stream_88.add(char_literal15);


            // AST REWRITE
            // elements: nodesClause, whereClause, graphClause, bindingsClause, uimaTypeName, ruleId
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 145:3: -> ^( AST_RULE ( ^( AST_ID ruleId ) )? uimaTypeName ( bindingsClause )? ( nodesClause )? ( graphClause )? ( whereClause )? )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:145:6: ^( AST_RULE ( ^( AST_ID ruleId ) )? uimaTypeName ( bindingsClause )? ( nodesClause )? ( graphClause )? ( whereClause )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_RULE, "AST_RULE")
                , root_1);

                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:145:17: ( ^( AST_ID ruleId ) )?
                if ( stream_ruleId.hasNext() ) {
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:145:17: ^( AST_ID ruleId )
                    {
                    Object root_2 = (Object)adaptor.nil();
                    root_2 = (Object)adaptor.becomeRoot(
                    (Object)adaptor.create(AST_ID, "AST_ID")
                    , root_2);

                    adaptor.addChild(root_2, stream_ruleId.nextTree());

                    adaptor.addChild(root_1, root_2);
                    }

                }
                stream_ruleId.reset();

                adaptor.addChild(root_1, stream_uimaTypeName.nextTree());

                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:145:48: ( bindingsClause )?
                if ( stream_bindingsClause.hasNext() ) {
                    adaptor.addChild(root_1, stream_bindingsClause.nextTree());

                }
                stream_bindingsClause.reset();

                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:145:64: ( nodesClause )?
                if ( stream_nodesClause.hasNext() ) {
                    adaptor.addChild(root_1, stream_nodesClause.nextTree());

                }
                stream_nodesClause.reset();

                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:145:77: ( graphClause )?
                if ( stream_graphClause.hasNext() ) {
                    adaptor.addChild(root_1, stream_graphClause.nextTree());

                }
                stream_graphClause.reset();

                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:145:90: ( whereClause )?
                if ( stream_whereClause.hasNext() ) {
                    adaptor.addChild(root_1, stream_whereClause.nextTree());

                }
                stream_whereClause.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "rule"


    public static class lazyRule_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "lazyRule"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:149:1: lazyRule : 'lazy' 'rule' uimaTypeName ruleId '{' ( nodesClause )? '}' -> ^( AST_LAZY_RULE ( ^( AST_ID ruleId ) )? uimaTypeName ( nodesClause )? ) ;
    public final AntlrParser.lazyRule_return lazyRule() throws RecognitionException {
        AntlrParser.lazyRule_return retval = new AntlrParser.lazyRule_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal16=null;
        Token string_literal17=null;
        Token char_literal20=null;
        Token char_literal22=null;
        AntlrParser.uimaTypeName_return uimaTypeName18 =null;

        AntlrParser.ruleId_return ruleId19 =null;

        AntlrParser.nodesClause_return nodesClause21 =null;


        Object string_literal16_tree=null;
        Object string_literal17_tree=null;
        Object char_literal20_tree=null;
        Object char_literal22_tree=null;
        RewriteRuleTokenStream stream_80=new RewriteRuleTokenStream(adaptor,"token 80");
        RewriteRuleTokenStream stream_87=new RewriteRuleTokenStream(adaptor,"token 87");
        RewriteRuleTokenStream stream_84=new RewriteRuleTokenStream(adaptor,"token 84");
        RewriteRuleTokenStream stream_88=new RewriteRuleTokenStream(adaptor,"token 88");
        RewriteRuleSubtreeStream stream_ruleId=new RewriteRuleSubtreeStream(adaptor,"rule ruleId");
        RewriteRuleSubtreeStream stream_uimaTypeName=new RewriteRuleSubtreeStream(adaptor,"rule uimaTypeName");
        RewriteRuleSubtreeStream stream_nodesClause=new RewriteRuleSubtreeStream(adaptor,"rule nodesClause");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:150:3: ( 'lazy' 'rule' uimaTypeName ruleId '{' ( nodesClause )? '}' -> ^( AST_LAZY_RULE ( ^( AST_ID ruleId ) )? uimaTypeName ( nodesClause )? ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:151:3: 'lazy' 'rule' uimaTypeName ruleId '{' ( nodesClause )? '}'
            {
            string_literal16=(Token)match(input,80,FOLLOW_80_in_lazyRule476);  
            stream_80.add(string_literal16);


            string_literal17=(Token)match(input,84,FOLLOW_84_in_lazyRule478);  
            stream_84.add(string_literal17);


            pushFollow(FOLLOW_uimaTypeName_in_lazyRule480);
            uimaTypeName18=uimaTypeName();

            state._fsp--;

            stream_uimaTypeName.add(uimaTypeName18.getTree());

            pushFollow(FOLLOW_ruleId_in_lazyRule482);
            ruleId19=ruleId();

            state._fsp--;

            stream_ruleId.add(ruleId19.getTree());

            char_literal20=(Token)match(input,87,FOLLOW_87_in_lazyRule484);  
            stream_87.add(char_literal20);


            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:152:5: ( nodesClause )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==82) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:152:5: nodesClause
                    {
                    pushFollow(FOLLOW_nodesClause_in_lazyRule490);
                    nodesClause21=nodesClause();

                    state._fsp--;

                    stream_nodesClause.add(nodesClause21.getTree());

                    }
                    break;

            }


            char_literal22=(Token)match(input,88,FOLLOW_88_in_lazyRule495);  
            stream_88.add(char_literal22);


            // AST REWRITE
            // elements: uimaTypeName, ruleId, nodesClause
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 154:3: -> ^( AST_LAZY_RULE ( ^( AST_ID ruleId ) )? uimaTypeName ( nodesClause )? )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:154:6: ^( AST_LAZY_RULE ( ^( AST_ID ruleId ) )? uimaTypeName ( nodesClause )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_LAZY_RULE, "AST_LAZY_RULE")
                , root_1);

                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:154:22: ( ^( AST_ID ruleId ) )?
                if ( stream_ruleId.hasNext() ) {
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:154:22: ^( AST_ID ruleId )
                    {
                    Object root_2 = (Object)adaptor.nil();
                    root_2 = (Object)adaptor.becomeRoot(
                    (Object)adaptor.create(AST_ID, "AST_ID")
                    , root_2);

                    adaptor.addChild(root_2, stream_ruleId.nextTree());

                    adaptor.addChild(root_1, root_2);
                    }

                }
                stream_ruleId.reset();

                adaptor.addChild(root_1, stream_uimaTypeName.nextTree());

                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:154:53: ( nodesClause )?
                if ( stream_nodesClause.hasNext() ) {
                    adaptor.addChild(root_1, stream_nodesClause.nextTree());

                }
                stream_nodesClause.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "lazyRule"


    public static class uimaTypeName_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "uimaTypeName"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:157:1: uimaTypeName : javaQualifiedName -> ^( AST_UIMA_TYPE_NAME javaQualifiedName ) ;
    public final AntlrParser.uimaTypeName_return uimaTypeName() throws RecognitionException {
        AntlrParser.uimaTypeName_return retval = new AntlrParser.uimaTypeName_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        AntlrParser.javaQualifiedName_return javaQualifiedName23 =null;


        RewriteRuleSubtreeStream stream_javaQualifiedName=new RewriteRuleSubtreeStream(adaptor,"rule javaQualifiedName");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:158:3: ( javaQualifiedName -> ^( AST_UIMA_TYPE_NAME javaQualifiedName ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:159:3: javaQualifiedName
            {
            pushFollow(FOLLOW_javaQualifiedName_in_uimaTypeName532);
            javaQualifiedName23=javaQualifiedName();

            state._fsp--;

            stream_javaQualifiedName.add(javaQualifiedName23.getTree());

            // AST REWRITE
            // elements: javaQualifiedName
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 160:3: -> ^( AST_UIMA_TYPE_NAME javaQualifiedName )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:160:6: ^( AST_UIMA_TYPE_NAME javaQualifiedName )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_UIMA_TYPE_NAME, "AST_UIMA_TYPE_NAME")
                , root_1);

                adaptor.addChild(root_1, stream_javaQualifiedName.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "uimaTypeName"


    public static class bindingsClause_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "bindingsClause"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:163:1: bindingsClause : 'bindings' '=' '{' ( bindingDef )+ '}' -> ^( AST_BINDINGS_CLAUSE ( bindingDef )+ ) ;
    public final AntlrParser.bindingsClause_return bindingsClause() throws RecognitionException {
        AntlrParser.bindingsClause_return retval = new AntlrParser.bindingsClause_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal24=null;
        Token char_literal25=null;
        Token char_literal26=null;
        Token char_literal28=null;
        AntlrParser.bindingDef_return bindingDef27 =null;


        Object string_literal24_tree=null;
        Object char_literal25_tree=null;
        Object char_literal26_tree=null;
        Object char_literal28_tree=null;
        RewriteRuleTokenStream stream_78=new RewriteRuleTokenStream(adaptor,"token 78");
        RewriteRuleTokenStream stream_72=new RewriteRuleTokenStream(adaptor,"token 72");
        RewriteRuleTokenStream stream_87=new RewriteRuleTokenStream(adaptor,"token 87");
        RewriteRuleTokenStream stream_88=new RewriteRuleTokenStream(adaptor,"token 88");
        RewriteRuleSubtreeStream stream_bindingDef=new RewriteRuleSubtreeStream(adaptor,"rule bindingDef");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:164:3: ( 'bindings' '=' '{' ( bindingDef )+ '}' -> ^( AST_BINDINGS_CLAUSE ( bindingDef )+ ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:165:3: 'bindings' '=' '{' ( bindingDef )+ '}'
            {
            string_literal24=(Token)match(input,78,FOLLOW_78_in_bindingsClause557);  
            stream_78.add(string_literal24);


            char_literal25=(Token)match(input,72,FOLLOW_72_in_bindingsClause559);  
            stream_72.add(char_literal25);


            char_literal26=(Token)match(input,87,FOLLOW_87_in_bindingsClause561);  
            stream_87.add(char_literal26);


            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:166:5: ( bindingDef )+
            int cnt9=0;
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==JAVA_IDENTIFIER) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:166:5: bindingDef
            	    {
            	    pushFollow(FOLLOW_bindingDef_in_bindingsClause567);
            	    bindingDef27=bindingDef();

            	    state._fsp--;

            	    stream_bindingDef.add(bindingDef27.getTree());

            	    }
            	    break;

            	default :
            	    if ( cnt9 >= 1 ) break loop9;
                        EarlyExitException eee =
                            new EarlyExitException(9, input);
                        throw eee;
                }
                cnt9++;
            } while (true);


            char_literal28=(Token)match(input,88,FOLLOW_88_in_bindingsClause572);  
            stream_88.add(char_literal28);


            // AST REWRITE
            // elements: bindingDef
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 168:3: -> ^( AST_BINDINGS_CLAUSE ( bindingDef )+ )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:168:6: ^( AST_BINDINGS_CLAUSE ( bindingDef )+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_BINDINGS_CLAUSE, "AST_BINDINGS_CLAUSE")
                , root_1);

                if ( !(stream_bindingDef.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_bindingDef.hasNext() ) {
                    adaptor.addChild(root_1, stream_bindingDef.nextTree());

                }
                stream_bindingDef.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "bindingsClause"


    public static class bindingDef_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "bindingDef"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:171:1: bindingDef : bindingId= JAVA_IDENTIFIER featurePath ruleId -> ^( AST_BINDING_DEFINITION $bindingId featurePath ruleId ) ;
    public final AntlrParser.bindingDef_return bindingDef() throws RecognitionException {
        AntlrParser.bindingDef_return retval = new AntlrParser.bindingDef_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token bindingId=null;
        AntlrParser.featurePath_return featurePath29 =null;

        AntlrParser.ruleId_return ruleId30 =null;


        Object bindingId_tree=null;
        RewriteRuleTokenStream stream_JAVA_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token JAVA_IDENTIFIER");
        RewriteRuleSubtreeStream stream_ruleId=new RewriteRuleSubtreeStream(adaptor,"rule ruleId");
        RewriteRuleSubtreeStream stream_featurePath=new RewriteRuleSubtreeStream(adaptor,"rule featurePath");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:172:3: (bindingId= JAVA_IDENTIFIER featurePath ruleId -> ^( AST_BINDING_DEFINITION $bindingId featurePath ruleId ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:173:3: bindingId= JAVA_IDENTIFIER featurePath ruleId
            {
            bindingId=(Token)match(input,JAVA_IDENTIFIER,FOLLOW_JAVA_IDENTIFIER_in_bindingDef600);  
            stream_JAVA_IDENTIFIER.add(bindingId);


            pushFollow(FOLLOW_featurePath_in_bindingDef602);
            featurePath29=featurePath();

            state._fsp--;

            stream_featurePath.add(featurePath29.getTree());

            pushFollow(FOLLOW_ruleId_in_bindingDef604);
            ruleId30=ruleId();

            state._fsp--;

            stream_ruleId.add(ruleId30.getTree());

            // AST REWRITE
            // elements: featurePath, bindingId, ruleId
            // token labels: bindingId
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleTokenStream stream_bindingId=new RewriteRuleTokenStream(adaptor,"token bindingId",bindingId);
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 174:3: -> ^( AST_BINDING_DEFINITION $bindingId featurePath ruleId )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:174:6: ^( AST_BINDING_DEFINITION $bindingId featurePath ruleId )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_BINDING_DEFINITION, "AST_BINDING_DEFINITION")
                , root_1);

                adaptor.addChild(root_1, stream_bindingId.nextNode());

                adaptor.addChild(root_1, stream_featurePath.nextTree());

                adaptor.addChild(root_1, stream_ruleId.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "bindingDef"


    public static class ruleId_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "ruleId"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:177:1: ruleId : RULE_ID ;
    public final AntlrParser.ruleId_return ruleId() throws RecognitionException {
        AntlrParser.ruleId_return retval = new AntlrParser.ruleId_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token RULE_ID31=null;

        Object RULE_ID31_tree=null;

        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:178:3: ( RULE_ID )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:179:3: RULE_ID
            {
            root_0 = (Object)adaptor.nil();


            RULE_ID31=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleId636); 
            RULE_ID31_tree = 
            (Object)adaptor.create(RULE_ID31)
            ;
            adaptor.addChild(root_0, RULE_ID31_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "ruleId"


    public static class nodesClause_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "nodesClause"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:187:1: nodesClause : 'nodes' '=' '{' ( nodeDef )+ '}' -> ^( AST_NODES_CLAUSE ( nodeDef )+ ) ;
    public final AntlrParser.nodesClause_return nodesClause() throws RecognitionException {
        AntlrParser.nodesClause_return retval = new AntlrParser.nodesClause_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal32=null;
        Token char_literal33=null;
        Token char_literal34=null;
        Token char_literal36=null;
        AntlrParser.nodeDef_return nodeDef35 =null;


        Object string_literal32_tree=null;
        Object char_literal33_tree=null;
        Object char_literal34_tree=null;
        Object char_literal36_tree=null;
        RewriteRuleTokenStream stream_82=new RewriteRuleTokenStream(adaptor,"token 82");
        RewriteRuleTokenStream stream_72=new RewriteRuleTokenStream(adaptor,"token 72");
        RewriteRuleTokenStream stream_87=new RewriteRuleTokenStream(adaptor,"token 87");
        RewriteRuleTokenStream stream_88=new RewriteRuleTokenStream(adaptor,"token 88");
        RewriteRuleSubtreeStream stream_nodeDef=new RewriteRuleSubtreeStream(adaptor,"rule nodeDef");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:188:3: ( 'nodes' '=' '{' ( nodeDef )+ '}' -> ^( AST_NODES_CLAUSE ( nodeDef )+ ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:189:3: 'nodes' '=' '{' ( nodeDef )+ '}'
            {
            string_literal32=(Token)match(input,82,FOLLOW_82_in_nodesClause670);  
            stream_82.add(string_literal32);


            char_literal33=(Token)match(input,72,FOLLOW_72_in_nodesClause672);  
            stream_72.add(char_literal33);


            char_literal34=(Token)match(input,87,FOLLOW_87_in_nodesClause674);  
            stream_87.add(char_literal34);


            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:190:5: ( nodeDef )+
            int cnt10=0;
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( (LA10_0==JAVA_IDENTIFIER) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:190:5: nodeDef
            	    {
            	    pushFollow(FOLLOW_nodeDef_in_nodesClause680);
            	    nodeDef35=nodeDef();

            	    state._fsp--;

            	    stream_nodeDef.add(nodeDef35.getTree());

            	    }
            	    break;

            	default :
            	    if ( cnt10 >= 1 ) break loop10;
                        EarlyExitException eee =
                            new EarlyExitException(10, input);
                        throw eee;
                }
                cnt10++;
            } while (true);


            char_literal36=(Token)match(input,88,FOLLOW_88_in_nodesClause685);  
            stream_88.add(char_literal36);


            // AST REWRITE
            // elements: nodeDef
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 192:3: -> ^( AST_NODES_CLAUSE ( nodeDef )+ )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:192:6: ^( AST_NODES_CLAUSE ( nodeDef )+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_NODES_CLAUSE, "AST_NODES_CLAUSE")
                , root_1);

                if ( !(stream_nodeDef.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_nodeDef.hasNext() ) {
                    adaptor.addChild(root_1, stream_nodeDef.nextTree());

                }
                stream_nodeDef.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "nodesClause"


    public static class nodeDef_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "nodeDef"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:195:1: nodeDef : JAVA_IDENTIFIER projectionOperator featurePath -> ^( AST_NODES_DEF JAVA_IDENTIFIER projectionOperator featurePath ) ;
    public final AntlrParser.nodeDef_return nodeDef() throws RecognitionException {
        AntlrParser.nodeDef_return retval = new AntlrParser.nodeDef_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token JAVA_IDENTIFIER37=null;
        AntlrParser.projectionOperator_return projectionOperator38 =null;

        AntlrParser.featurePath_return featurePath39 =null;


        Object JAVA_IDENTIFIER37_tree=null;
        RewriteRuleTokenStream stream_JAVA_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token JAVA_IDENTIFIER");
        RewriteRuleSubtreeStream stream_projectionOperator=new RewriteRuleSubtreeStream(adaptor,"rule projectionOperator");
        RewriteRuleSubtreeStream stream_featurePath=new RewriteRuleSubtreeStream(adaptor,"rule featurePath");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:196:3: ( JAVA_IDENTIFIER projectionOperator featurePath -> ^( AST_NODES_DEF JAVA_IDENTIFIER projectionOperator featurePath ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:197:3: JAVA_IDENTIFIER projectionOperator featurePath
            {
            JAVA_IDENTIFIER37=(Token)match(input,JAVA_IDENTIFIER,FOLLOW_JAVA_IDENTIFIER_in_nodeDef713);  
            stream_JAVA_IDENTIFIER.add(JAVA_IDENTIFIER37);


            pushFollow(FOLLOW_projectionOperator_in_nodeDef715);
            projectionOperator38=projectionOperator();

            state._fsp--;

            stream_projectionOperator.add(projectionOperator38.getTree());

            pushFollow(FOLLOW_featurePath_in_nodeDef717);
            featurePath39=featurePath();

            state._fsp--;

            stream_featurePath.add(featurePath39.getTree());

            // AST REWRITE
            // elements: projectionOperator, JAVA_IDENTIFIER, featurePath
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 198:3: -> ^( AST_NODES_DEF JAVA_IDENTIFIER projectionOperator featurePath )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:198:6: ^( AST_NODES_DEF JAVA_IDENTIFIER projectionOperator featurePath )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_NODES_DEF, "AST_NODES_DEF")
                , root_1);

                adaptor.addChild(root_1, 
                stream_JAVA_IDENTIFIER.nextNode()
                );

                adaptor.addChild(root_1, stream_projectionOperator.nextTree());

                adaptor.addChild(root_1, stream_featurePath.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "nodeDef"


    public static class projectionOperator_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "projectionOperator"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:201:1: projectionOperator : ( 'uri' ( converters )? -> ^( AST_PROJECTION_OPERATOR 'uri' ( converters )? ) | 'literal' '^^' iri ( converters )? -> ^( AST_PROJECTION_OPERATOR 'literal' ( converters )? ^( AST_DATATYPE iri ) ) | 'literal' LANGTAG ( converters )? -> ^( AST_PROJECTION_OPERATOR 'literal' ( converters )? ^( AST_LANG LANGTAG ) ) | 'literal' ( converters )? -> ^( AST_PROJECTION_OPERATOR 'literal' ( converters )? ) );
    public final AntlrParser.projectionOperator_return projectionOperator() throws RecognitionException {
        AntlrParser.projectionOperator_return retval = new AntlrParser.projectionOperator_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal40=null;
        Token string_literal42=null;
        Token string_literal43=null;
        Token string_literal46=null;
        Token LANGTAG47=null;
        Token string_literal49=null;
        AntlrParser.converters_return converters41 =null;

        AntlrParser.iri_return iri44 =null;

        AntlrParser.converters_return converters45 =null;

        AntlrParser.converters_return converters48 =null;

        AntlrParser.converters_return converters50 =null;


        Object string_literal40_tree=null;
        Object string_literal42_tree=null;
        Object string_literal43_tree=null;
        Object string_literal46_tree=null;
        Object LANGTAG47_tree=null;
        Object string_literal49_tree=null;
        RewriteRuleTokenStream stream_81=new RewriteRuleTokenStream(adaptor,"token 81");
        RewriteRuleTokenStream stream_LANGTAG=new RewriteRuleTokenStream(adaptor,"token LANGTAG");
        RewriteRuleTokenStream stream_76=new RewriteRuleTokenStream(adaptor,"token 76");
        RewriteRuleTokenStream stream_85=new RewriteRuleTokenStream(adaptor,"token 85");
        RewriteRuleSubtreeStream stream_converters=new RewriteRuleSubtreeStream(adaptor,"rule converters");
        RewriteRuleSubtreeStream stream_iri=new RewriteRuleSubtreeStream(adaptor,"rule iri");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:202:3: ( 'uri' ( converters )? -> ^( AST_PROJECTION_OPERATOR 'uri' ( converters )? ) | 'literal' '^^' iri ( converters )? -> ^( AST_PROJECTION_OPERATOR 'literal' ( converters )? ^( AST_DATATYPE iri ) ) | 'literal' LANGTAG ( converters )? -> ^( AST_PROJECTION_OPERATOR 'literal' ( converters )? ^( AST_LANG LANGTAG ) ) | 'literal' ( converters )? -> ^( AST_PROJECTION_OPERATOR 'literal' ( converters )? ) )
            int alt15=4;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==85) ) {
                alt15=1;
            }
            else if ( (LA15_0==81) ) {
                switch ( input.LA(2) ) {
                case 76:
                    {
                    alt15=2;
                    }
                    break;
                case LANGTAG:
                    {
                    alt15=3;
                    }
                    break;
                case JAVA_IDENTIFIER:
                case 67:
                    {
                    alt15=4;
                    }
                    break;
                default:
                    NoViableAltException nvae =
                        new NoViableAltException("", 15, 2, input);

                    throw nvae;

                }

            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;

            }
            switch (alt15) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:203:3: 'uri' ( converters )?
                    {
                    string_literal40=(Token)match(input,85,FOLLOW_85_in_projectionOperator748);  
                    stream_85.add(string_literal40);


                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:203:9: ( converters )?
                    int alt11=2;
                    int LA11_0 = input.LA(1);

                    if ( (LA11_0==67) ) {
                        alt11=1;
                    }
                    switch (alt11) {
                        case 1 :
                            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:203:9: converters
                            {
                            pushFollow(FOLLOW_converters_in_projectionOperator750);
                            converters41=converters();

                            state._fsp--;

                            stream_converters.add(converters41.getTree());

                            }
                            break;

                    }


                    // AST REWRITE
                    // elements: converters, 85
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 204:3: -> ^( AST_PROJECTION_OPERATOR 'uri' ( converters )? )
                    {
                        // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:204:6: ^( AST_PROJECTION_OPERATOR 'uri' ( converters )? )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(AST_PROJECTION_OPERATOR, "AST_PROJECTION_OPERATOR")
                        , root_1);

                        adaptor.addChild(root_1, 
                        stream_85.nextNode()
                        );

                        // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:204:38: ( converters )?
                        if ( stream_converters.hasNext() ) {
                            adaptor.addChild(root_1, stream_converters.nextTree());

                        }
                        stream_converters.reset();

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;
                case 2 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:206:3: 'literal' '^^' iri ( converters )?
                    {
                    string_literal42=(Token)match(input,81,FOLLOW_81_in_projectionOperator772);  
                    stream_81.add(string_literal42);


                    string_literal43=(Token)match(input,76,FOLLOW_76_in_projectionOperator774);  
                    stream_76.add(string_literal43);


                    pushFollow(FOLLOW_iri_in_projectionOperator776);
                    iri44=iri();

                    state._fsp--;

                    stream_iri.add(iri44.getTree());

                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:206:22: ( converters )?
                    int alt12=2;
                    int LA12_0 = input.LA(1);

                    if ( (LA12_0==67) ) {
                        alt12=1;
                    }
                    switch (alt12) {
                        case 1 :
                            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:206:22: converters
                            {
                            pushFollow(FOLLOW_converters_in_projectionOperator778);
                            converters45=converters();

                            state._fsp--;

                            stream_converters.add(converters45.getTree());

                            }
                            break;

                    }


                    // AST REWRITE
                    // elements: 81, converters, iri
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 207:3: -> ^( AST_PROJECTION_OPERATOR 'literal' ( converters )? ^( AST_DATATYPE iri ) )
                    {
                        // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:207:6: ^( AST_PROJECTION_OPERATOR 'literal' ( converters )? ^( AST_DATATYPE iri ) )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(AST_PROJECTION_OPERATOR, "AST_PROJECTION_OPERATOR")
                        , root_1);

                        adaptor.addChild(root_1, 
                        stream_81.nextNode()
                        );

                        // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:207:42: ( converters )?
                        if ( stream_converters.hasNext() ) {
                            adaptor.addChild(root_1, stream_converters.nextTree());

                        }
                        stream_converters.reset();

                        // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:207:54: ^( AST_DATATYPE iri )
                        {
                        Object root_2 = (Object)adaptor.nil();
                        root_2 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(AST_DATATYPE, "AST_DATATYPE")
                        , root_2);

                        adaptor.addChild(root_2, stream_iri.nextTree());

                        adaptor.addChild(root_1, root_2);
                        }

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;
                case 3 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:209:3: 'literal' LANGTAG ( converters )?
                    {
                    string_literal46=(Token)match(input,81,FOLLOW_81_in_projectionOperator807);  
                    stream_81.add(string_literal46);


                    LANGTAG47=(Token)match(input,LANGTAG,FOLLOW_LANGTAG_in_projectionOperator809);  
                    stream_LANGTAG.add(LANGTAG47);


                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:209:22: ( converters )?
                    int alt13=2;
                    int LA13_0 = input.LA(1);

                    if ( (LA13_0==67) ) {
                        alt13=1;
                    }
                    switch (alt13) {
                        case 1 :
                            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:209:22: converters
                            {
                            pushFollow(FOLLOW_converters_in_projectionOperator812);
                            converters48=converters();

                            state._fsp--;

                            stream_converters.add(converters48.getTree());

                            }
                            break;

                    }


                    // AST REWRITE
                    // elements: 81, converters, LANGTAG
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 210:3: -> ^( AST_PROJECTION_OPERATOR 'literal' ( converters )? ^( AST_LANG LANGTAG ) )
                    {
                        // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:210:6: ^( AST_PROJECTION_OPERATOR 'literal' ( converters )? ^( AST_LANG LANGTAG ) )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(AST_PROJECTION_OPERATOR, "AST_PROJECTION_OPERATOR")
                        , root_1);

                        adaptor.addChild(root_1, 
                        stream_81.nextNode()
                        );

                        // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:210:42: ( converters )?
                        if ( stream_converters.hasNext() ) {
                            adaptor.addChild(root_1, stream_converters.nextTree());

                        }
                        stream_converters.reset();

                        // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:210:54: ^( AST_LANG LANGTAG )
                        {
                        Object root_2 = (Object)adaptor.nil();
                        root_2 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(AST_LANG, "AST_LANG")
                        , root_2);

                        adaptor.addChild(root_2, 
                        stream_LANGTAG.nextNode()
                        );

                        adaptor.addChild(root_1, root_2);
                        }

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;
                case 4 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:212:3: 'literal' ( converters )?
                    {
                    string_literal49=(Token)match(input,81,FOLLOW_81_in_projectionOperator840);  
                    stream_81.add(string_literal49);


                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:212:13: ( converters )?
                    int alt14=2;
                    int LA14_0 = input.LA(1);

                    if ( (LA14_0==67) ) {
                        alt14=1;
                    }
                    switch (alt14) {
                        case 1 :
                            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:212:13: converters
                            {
                            pushFollow(FOLLOW_converters_in_projectionOperator842);
                            converters50=converters();

                            state._fsp--;

                            stream_converters.add(converters50.getTree());

                            }
                            break;

                    }


                    // AST REWRITE
                    // elements: converters, 81
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 213:3: -> ^( AST_PROJECTION_OPERATOR 'literal' ( converters )? )
                    {
                        // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:213:6: ^( AST_PROJECTION_OPERATOR 'literal' ( converters )? )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(AST_PROJECTION_OPERATOR, "AST_PROJECTION_OPERATOR")
                        , root_1);

                        adaptor.addChild(root_1, 
                        stream_81.nextNode()
                        );

                        // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:213:42: ( converters )?
                        if ( stream_converters.hasNext() ) {
                            adaptor.addChild(root_1, stream_converters.nextTree());

                        }
                        stream_converters.reset();

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "projectionOperator"


    public static class converters_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "converters"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:217:1: converters : '(' iri ( ',' iri )* ')' -> ^( AST_CONVERTERS ( iri )+ ) ;
    public final AntlrParser.converters_return converters() throws RecognitionException {
        AntlrParser.converters_return retval = new AntlrParser.converters_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token char_literal51=null;
        Token char_literal53=null;
        Token char_literal55=null;
        AntlrParser.iri_return iri52 =null;

        AntlrParser.iri_return iri54 =null;


        Object char_literal51_tree=null;
        Object char_literal53_tree=null;
        Object char_literal55_tree=null;
        RewriteRuleTokenStream stream_67=new RewriteRuleTokenStream(adaptor,"token 67");
        RewriteRuleTokenStream stream_69=new RewriteRuleTokenStream(adaptor,"token 69");
        RewriteRuleTokenStream stream_68=new RewriteRuleTokenStream(adaptor,"token 68");
        RewriteRuleSubtreeStream stream_iri=new RewriteRuleSubtreeStream(adaptor,"rule iri");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:218:3: ( '(' iri ( ',' iri )* ')' -> ^( AST_CONVERTERS ( iri )+ ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:219:3: '(' iri ( ',' iri )* ')'
            {
            char_literal51=(Token)match(input,67,FOLLOW_67_in_converters874);  
            stream_67.add(char_literal51);


            pushFollow(FOLLOW_iri_in_converters876);
            iri52=iri();

            state._fsp--;

            stream_iri.add(iri52.getTree());

            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:219:11: ( ',' iri )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==69) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:219:12: ',' iri
            	    {
            	    char_literal53=(Token)match(input,69,FOLLOW_69_in_converters879);  
            	    stream_69.add(char_literal53);


            	    pushFollow(FOLLOW_iri_in_converters881);
            	    iri54=iri();

            	    state._fsp--;

            	    stream_iri.add(iri54.getTree());

            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);


            char_literal55=(Token)match(input,68,FOLLOW_68_in_converters885);  
            stream_68.add(char_literal55);


            // AST REWRITE
            // elements: iri
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 220:3: -> ^( AST_CONVERTERS ( iri )+ )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:220:6: ^( AST_CONVERTERS ( iri )+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_CONVERTERS, "AST_CONVERTERS")
                , root_1);

                if ( !(stream_iri.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_iri.hasNext() ) {
                    adaptor.addChild(root_1, stream_iri.nextTree());

                }
                stream_iri.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "converters"


    public static class featurePath_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "featurePath"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:223:1: featurePath : featurePathElement ( '/' featurePathElement )* -> ^( AST_FEATURE_PATH ( featurePathElement )+ ) ;
    public final AntlrParser.featurePath_return featurePath() throws RecognitionException {
        AntlrParser.featurePath_return retval = new AntlrParser.featurePath_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token char_literal57=null;
        AntlrParser.featurePathElement_return featurePathElement56 =null;

        AntlrParser.featurePathElement_return featurePathElement58 =null;


        Object char_literal57_tree=null;
        RewriteRuleTokenStream stream_71=new RewriteRuleTokenStream(adaptor,"token 71");
        RewriteRuleSubtreeStream stream_featurePathElement=new RewriteRuleSubtreeStream(adaptor,"rule featurePathElement");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:224:3: ( featurePathElement ( '/' featurePathElement )* -> ^( AST_FEATURE_PATH ( featurePathElement )+ ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:225:3: featurePathElement ( '/' featurePathElement )*
            {
            pushFollow(FOLLOW_featurePathElement_in_featurePath911);
            featurePathElement56=featurePathElement();

            state._fsp--;

            stream_featurePathElement.add(featurePathElement56.getTree());

            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:225:22: ( '/' featurePathElement )*
            loop17:
            do {
                int alt17=2;
                int LA17_0 = input.LA(1);

                if ( (LA17_0==71) ) {
                    alt17=1;
                }


                switch (alt17) {
            	case 1 :
            	    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:225:23: '/' featurePathElement
            	    {
            	    char_literal57=(Token)match(input,71,FOLLOW_71_in_featurePath914);  
            	    stream_71.add(char_literal57);


            	    pushFollow(FOLLOW_featurePathElement_in_featurePath916);
            	    featurePathElement58=featurePathElement();

            	    state._fsp--;

            	    stream_featurePathElement.add(featurePathElement58.getTree());

            	    }
            	    break;

            	default :
            	    break loop17;
                }
            } while (true);


            // AST REWRITE
            // elements: featurePathElement
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 226:3: -> ^( AST_FEATURE_PATH ( featurePathElement )+ )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:226:6: ^( AST_FEATURE_PATH ( featurePathElement )+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_FEATURE_PATH, "AST_FEATURE_PATH")
                , root_1);

                if ( !(stream_featurePathElement.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_featurePathElement.hasNext() ) {
                    adaptor.addChild(root_1, stream_featurePathElement.nextTree());

                }
                stream_featurePathElement.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "featurePath"


    public static class featurePathElement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "featurePathElement"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:229:1: featurePathElement : JAVA_IDENTIFIER ( '[' INTEGER ']' )? -> ^( AST_FEATURE_PATH_ELEMENT JAVA_IDENTIFIER ( INTEGER )? ) ;
    public final AntlrParser.featurePathElement_return featurePathElement() throws RecognitionException {
        AntlrParser.featurePathElement_return retval = new AntlrParser.featurePathElement_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token JAVA_IDENTIFIER59=null;
        Token char_literal60=null;
        Token INTEGER61=null;
        Token char_literal62=null;

        Object JAVA_IDENTIFIER59_tree=null;
        Object char_literal60_tree=null;
        Object INTEGER61_tree=null;
        Object char_literal62_tree=null;
        RewriteRuleTokenStream stream_INTEGER=new RewriteRuleTokenStream(adaptor,"token INTEGER");
        RewriteRuleTokenStream stream_74=new RewriteRuleTokenStream(adaptor,"token 74");
        RewriteRuleTokenStream stream_75=new RewriteRuleTokenStream(adaptor,"token 75");
        RewriteRuleTokenStream stream_JAVA_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token JAVA_IDENTIFIER");

        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:230:3: ( JAVA_IDENTIFIER ( '[' INTEGER ']' )? -> ^( AST_FEATURE_PATH_ELEMENT JAVA_IDENTIFIER ( INTEGER )? ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:231:3: JAVA_IDENTIFIER ( '[' INTEGER ']' )?
            {
            JAVA_IDENTIFIER59=(Token)match(input,JAVA_IDENTIFIER,FOLLOW_JAVA_IDENTIFIER_in_featurePathElement944);  
            stream_JAVA_IDENTIFIER.add(JAVA_IDENTIFIER59);


            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:231:19: ( '[' INTEGER ']' )?
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==74) ) {
                alt18=1;
            }
            switch (alt18) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:231:20: '[' INTEGER ']'
                    {
                    char_literal60=(Token)match(input,74,FOLLOW_74_in_featurePathElement947);  
                    stream_74.add(char_literal60);


                    INTEGER61=(Token)match(input,INTEGER,FOLLOW_INTEGER_in_featurePathElement949);  
                    stream_INTEGER.add(INTEGER61);


                    char_literal62=(Token)match(input,75,FOLLOW_75_in_featurePathElement951);  
                    stream_75.add(char_literal62);


                    }
                    break;

            }


            // AST REWRITE
            // elements: JAVA_IDENTIFIER, INTEGER
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 232:3: -> ^( AST_FEATURE_PATH_ELEMENT JAVA_IDENTIFIER ( INTEGER )? )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:232:6: ^( AST_FEATURE_PATH_ELEMENT JAVA_IDENTIFIER ( INTEGER )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_FEATURE_PATH_ELEMENT, "AST_FEATURE_PATH_ELEMENT")
                , root_1);

                adaptor.addChild(root_1, 
                stream_JAVA_IDENTIFIER.nextNode()
                );

                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:232:49: ( INTEGER )?
                if ( stream_INTEGER.hasNext() ) {
                    adaptor.addChild(root_1, 
                    stream_INTEGER.nextNode()
                    );

                }
                stream_INTEGER.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "featurePathElement"


    public static class graphClause_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "graphClause"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:235:1: graphClause : 'graph' '=' graph -> ^( AST_GRAPH_CLAUSE graph ) ;
    public final AntlrParser.graphClause_return graphClause() throws RecognitionException {
        AntlrParser.graphClause_return retval = new AntlrParser.graphClause_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal63=null;
        Token char_literal64=null;
        AntlrParser.graph_return graph65 =null;


        Object string_literal63_tree=null;
        Object char_literal64_tree=null;
        RewriteRuleTokenStream stream_79=new RewriteRuleTokenStream(adaptor,"token 79");
        RewriteRuleTokenStream stream_72=new RewriteRuleTokenStream(adaptor,"token 72");
        RewriteRuleSubtreeStream stream_graph=new RewriteRuleSubtreeStream(adaptor,"rule graph");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:236:3: ( 'graph' '=' graph -> ^( AST_GRAPH_CLAUSE graph ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:237:3: 'graph' '=' graph
            {
            string_literal63=(Token)match(input,79,FOLLOW_79_in_graphClause981);  
            stream_79.add(string_literal63);


            char_literal64=(Token)match(input,72,FOLLOW_72_in_graphClause983);  
            stream_72.add(char_literal64);


            pushFollow(FOLLOW_graph_in_graphClause985);
            graph65=graph();

            state._fsp--;

            stream_graph.add(graph65.getTree());

            // AST REWRITE
            // elements: graph
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 238:3: -> ^( AST_GRAPH_CLAUSE graph )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:238:6: ^( AST_GRAPH_CLAUSE graph )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_GRAPH_CLAUSE, "AST_GRAPH_CLAUSE")
                , root_1);

                adaptor.addChild(root_1, stream_graph.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "graphClause"


    public static class javaQualifiedName_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "javaQualifiedName"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:241:1: javaQualifiedName : JAVA_IDENTIFIER ( '.' JAVA_IDENTIFIER )* -> ^( AST_JAVA_QUALIFIED_NAMED ( JAVA_IDENTIFIER )+ ) ;
    public final AntlrParser.javaQualifiedName_return javaQualifiedName() throws RecognitionException {
        AntlrParser.javaQualifiedName_return retval = new AntlrParser.javaQualifiedName_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token JAVA_IDENTIFIER66=null;
        Token char_literal67=null;
        Token JAVA_IDENTIFIER68=null;

        Object JAVA_IDENTIFIER66_tree=null;
        Object char_literal67_tree=null;
        Object JAVA_IDENTIFIER68_tree=null;
        RewriteRuleTokenStream stream_70=new RewriteRuleTokenStream(adaptor,"token 70");
        RewriteRuleTokenStream stream_JAVA_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token JAVA_IDENTIFIER");

        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:242:3: ( JAVA_IDENTIFIER ( '.' JAVA_IDENTIFIER )* -> ^( AST_JAVA_QUALIFIED_NAMED ( JAVA_IDENTIFIER )+ ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:243:3: JAVA_IDENTIFIER ( '.' JAVA_IDENTIFIER )*
            {
            JAVA_IDENTIFIER66=(Token)match(input,JAVA_IDENTIFIER,FOLLOW_JAVA_IDENTIFIER_in_javaQualifiedName1011);  
            stream_JAVA_IDENTIFIER.add(JAVA_IDENTIFIER66);


            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:243:19: ( '.' JAVA_IDENTIFIER )*
            loop19:
            do {
                int alt19=2;
                int LA19_0 = input.LA(1);

                if ( (LA19_0==70) ) {
                    alt19=1;
                }


                switch (alt19) {
            	case 1 :
            	    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:243:20: '.' JAVA_IDENTIFIER
            	    {
            	    char_literal67=(Token)match(input,70,FOLLOW_70_in_javaQualifiedName1014);  
            	    stream_70.add(char_literal67);


            	    JAVA_IDENTIFIER68=(Token)match(input,JAVA_IDENTIFIER,FOLLOW_JAVA_IDENTIFIER_in_javaQualifiedName1016);  
            	    stream_JAVA_IDENTIFIER.add(JAVA_IDENTIFIER68);


            	    }
            	    break;

            	default :
            	    break loop19;
                }
            } while (true);


            // AST REWRITE
            // elements: JAVA_IDENTIFIER
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 244:3: -> ^( AST_JAVA_QUALIFIED_NAMED ( JAVA_IDENTIFIER )+ )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:244:6: ^( AST_JAVA_QUALIFIED_NAMED ( JAVA_IDENTIFIER )+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_JAVA_QUALIFIED_NAMED, "AST_JAVA_QUALIFIED_NAMED")
                , root_1);

                if ( !(stream_JAVA_IDENTIFIER.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_JAVA_IDENTIFIER.hasNext() ) {
                    adaptor.addChild(root_1, 
                    stream_JAVA_IDENTIFIER.nextNode()
                    );

                }
                stream_JAVA_IDENTIFIER.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "javaQualifiedName"


    public static class graph_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "graph"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:247:1: graph : '{' ( graphElement )+ '}' -> ^( AST_GRAPH ( graphElement )+ ) ;
    public final AntlrParser.graph_return graph() throws RecognitionException {
        AntlrParser.graph_return retval = new AntlrParser.graph_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token char_literal69=null;
        Token char_literal71=null;
        AntlrParser.graphElement_return graphElement70 =null;


        Object char_literal69_tree=null;
        Object char_literal71_tree=null;
        RewriteRuleTokenStream stream_87=new RewriteRuleTokenStream(adaptor,"token 87");
        RewriteRuleTokenStream stream_88=new RewriteRuleTokenStream(adaptor,"token 88");
        RewriteRuleSubtreeStream stream_graphElement=new RewriteRuleSubtreeStream(adaptor,"rule graphElement");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:248:3: ( '{' ( graphElement )+ '}' -> ^( AST_GRAPH ( graphElement )+ ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:249:3: '{' ( graphElement )+ '}'
            {
            char_literal69=(Token)match(input,87,FOLLOW_87_in_graph1044);  
            stream_87.add(char_literal69);


            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:250:3: ( graphElement )+
            int cnt20=0;
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( (LA20_0==BLANK_NODE_LABEL||LA20_0==IRIREF||(LA20_0 >= PNAME_LN && LA20_0 <= PNAME_NS)||(LA20_0 >= VAR1 && LA20_0 <= VAR2)||LA20_0==73) ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:250:3: graphElement
            	    {
            	    pushFollow(FOLLOW_graphElement_in_graph1048);
            	    graphElement70=graphElement();

            	    state._fsp--;

            	    stream_graphElement.add(graphElement70.getTree());

            	    }
            	    break;

            	default :
            	    if ( cnt20 >= 1 ) break loop20;
                        EarlyExitException eee =
                            new EarlyExitException(20, input);
                        throw eee;
                }
                cnt20++;
            } while (true);


            char_literal71=(Token)match(input,88,FOLLOW_88_in_graph1053);  
            stream_88.add(char_literal71);


            // AST REWRITE
            // elements: graphElement
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 252:3: -> ^( AST_GRAPH ( graphElement )+ )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:252:6: ^( AST_GRAPH ( graphElement )+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_GRAPH, "AST_GRAPH")
                , root_1);

                if ( !(stream_graphElement.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_graphElement.hasNext() ) {
                    adaptor.addChild(root_1, stream_graphElement.nextTree());

                }
                stream_graphElement.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "graph"


    public static class graphElement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "graphElement"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:255:2: graphElement : ( graphTriple | optionalGraphElement );
    public final AntlrParser.graphElement_return graphElement() throws RecognitionException {
        AntlrParser.graphElement_return retval = new AntlrParser.graphElement_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        AntlrParser.graphTriple_return graphTriple72 =null;

        AntlrParser.optionalGraphElement_return optionalGraphElement73 =null;



        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:256:3: ( graphTriple | optionalGraphElement )
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==BLANK_NODE_LABEL||LA21_0==IRIREF||(LA21_0 >= PNAME_LN && LA21_0 <= PNAME_NS)||(LA21_0 >= VAR1 && LA21_0 <= VAR2)) ) {
                alt21=1;
            }
            else if ( (LA21_0==73) ) {
                alt21=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 21, 0, input);

                throw nvae;

            }
            switch (alt21) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:257:3: graphTriple
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_graphTriple_in_graphElement1081);
                    graphTriple72=graphTriple();

                    state._fsp--;

                    adaptor.addChild(root_0, graphTriple72.getTree());

                    }
                    break;
                case 2 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:257:17: optionalGraphElement
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_optionalGraphElement_in_graphElement1085);
                    optionalGraphElement73=optionalGraphElement();

                    state._fsp--;

                    adaptor.addChild(root_0, optionalGraphElement73.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "graphElement"


    public static class optionalGraphElement_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "optionalGraphElement"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:260:2: optionalGraphElement : 'OPTIONAL' '{' ( graphTriple )+ '}' -> ^( AST_OPTIONAL ( graphTriple )+ ) ;
    public final AntlrParser.optionalGraphElement_return optionalGraphElement() throws RecognitionException {
        AntlrParser.optionalGraphElement_return retval = new AntlrParser.optionalGraphElement_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal74=null;
        Token char_literal75=null;
        Token char_literal77=null;
        AntlrParser.graphTriple_return graphTriple76 =null;


        Object string_literal74_tree=null;
        Object char_literal75_tree=null;
        Object char_literal77_tree=null;
        RewriteRuleTokenStream stream_73=new RewriteRuleTokenStream(adaptor,"token 73");
        RewriteRuleTokenStream stream_87=new RewriteRuleTokenStream(adaptor,"token 87");
        RewriteRuleTokenStream stream_88=new RewriteRuleTokenStream(adaptor,"token 88");
        RewriteRuleSubtreeStream stream_graphTriple=new RewriteRuleSubtreeStream(adaptor,"rule graphTriple");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:261:3: ( 'OPTIONAL' '{' ( graphTriple )+ '}' -> ^( AST_OPTIONAL ( graphTriple )+ ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:262:3: 'OPTIONAL' '{' ( graphTriple )+ '}'
            {
            string_literal74=(Token)match(input,73,FOLLOW_73_in_optionalGraphElement1102);  
            stream_73.add(string_literal74);


            char_literal75=(Token)match(input,87,FOLLOW_87_in_optionalGraphElement1104);  
            stream_87.add(char_literal75);


            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:262:18: ( graphTriple )+
            int cnt22=0;
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( (LA22_0==BLANK_NODE_LABEL||LA22_0==IRIREF||(LA22_0 >= PNAME_LN && LA22_0 <= PNAME_NS)||(LA22_0 >= VAR1 && LA22_0 <= VAR2)) ) {
                    alt22=1;
                }


                switch (alt22) {
            	case 1 :
            	    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:262:18: graphTriple
            	    {
            	    pushFollow(FOLLOW_graphTriple_in_optionalGraphElement1106);
            	    graphTriple76=graphTriple();

            	    state._fsp--;

            	    stream_graphTriple.add(graphTriple76.getTree());

            	    }
            	    break;

            	default :
            	    if ( cnt22 >= 1 ) break loop22;
                        EarlyExitException eee =
                            new EarlyExitException(22, input);
                        throw eee;
                }
                cnt22++;
            } while (true);


            char_literal77=(Token)match(input,88,FOLLOW_88_in_optionalGraphElement1109);  
            stream_88.add(char_literal77);


            // AST REWRITE
            // elements: graphTriple
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 263:3: -> ^( AST_OPTIONAL ( graphTriple )+ )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:263:6: ^( AST_OPTIONAL ( graphTriple )+ )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_OPTIONAL, "AST_OPTIONAL")
                , root_1);

                if ( !(stream_graphTriple.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_graphTriple.hasNext() ) {
                    adaptor.addChild(root_1, stream_graphTriple.nextTree());

                }
                stream_graphTriple.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "optionalGraphElement"


    public static class graphTriple_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "graphTriple"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:266:1: graphTriple : graphSubject graphPredicate graphObject '.' -> ^( AST_GRAPH_TRIPLE graphSubject graphPredicate graphObject ) ;
    public final AntlrParser.graphTriple_return graphTriple() throws RecognitionException {
        AntlrParser.graphTriple_return retval = new AntlrParser.graphTriple_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token char_literal81=null;
        AntlrParser.graphSubject_return graphSubject78 =null;

        AntlrParser.graphPredicate_return graphPredicate79 =null;

        AntlrParser.graphObject_return graphObject80 =null;


        Object char_literal81_tree=null;
        RewriteRuleTokenStream stream_70=new RewriteRuleTokenStream(adaptor,"token 70");
        RewriteRuleSubtreeStream stream_graphPredicate=new RewriteRuleSubtreeStream(adaptor,"rule graphPredicate");
        RewriteRuleSubtreeStream stream_graphSubject=new RewriteRuleSubtreeStream(adaptor,"rule graphSubject");
        RewriteRuleSubtreeStream stream_graphObject=new RewriteRuleSubtreeStream(adaptor,"rule graphObject");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:267:3: ( graphSubject graphPredicate graphObject '.' -> ^( AST_GRAPH_TRIPLE graphSubject graphPredicate graphObject ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:268:3: graphSubject graphPredicate graphObject '.'
            {
            pushFollow(FOLLOW_graphSubject_in_graphTriple1136);
            graphSubject78=graphSubject();

            state._fsp--;

            stream_graphSubject.add(graphSubject78.getTree());

            pushFollow(FOLLOW_graphPredicate_in_graphTriple1138);
            graphPredicate79=graphPredicate();

            state._fsp--;

            stream_graphPredicate.add(graphPredicate79.getTree());

            pushFollow(FOLLOW_graphObject_in_graphTriple1140);
            graphObject80=graphObject();

            state._fsp--;

            stream_graphObject.add(graphObject80.getTree());

            char_literal81=(Token)match(input,70,FOLLOW_70_in_graphTriple1142);  
            stream_70.add(char_literal81);


            // AST REWRITE
            // elements: graphSubject, graphObject, graphPredicate
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 269:3: -> ^( AST_GRAPH_TRIPLE graphSubject graphPredicate graphObject )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:269:6: ^( AST_GRAPH_TRIPLE graphSubject graphPredicate graphObject )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_GRAPH_TRIPLE, "AST_GRAPH_TRIPLE")
                , root_1);

                adaptor.addChild(root_1, stream_graphSubject.nextTree());

                adaptor.addChild(root_1, stream_graphPredicate.nextTree());

                adaptor.addChild(root_1, stream_graphObject.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "graphTriple"


    public static class graphSubject_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "graphSubject"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:272:1: graphSubject : ( var | iri | blankNode | placeholder );
    public final AntlrParser.graphSubject_return graphSubject() throws RecognitionException {
        AntlrParser.graphSubject_return retval = new AntlrParser.graphSubject_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        AntlrParser.var_return var82 =null;

        AntlrParser.iri_return iri83 =null;

        AntlrParser.blankNode_return blankNode84 =null;

        AntlrParser.placeholder_return placeholder85 =null;



        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:273:3: ( var | iri | blankNode | placeholder )
            int alt23=4;
            switch ( input.LA(1) ) {
            case VAR1:
                {
                alt23=1;
                }
                break;
            case IRIREF:
            case PNAME_LN:
            case PNAME_NS:
                {
                alt23=2;
                }
                break;
            case BLANK_NODE_LABEL:
                {
                alt23=3;
                }
                break;
            case VAR2:
                {
                alt23=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 23, 0, input);

                throw nvae;

            }

            switch (alt23) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:274:3: var
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_var_in_graphSubject1173);
                    var82=var();

                    state._fsp--;

                    adaptor.addChild(root_0, var82.getTree());

                    }
                    break;
                case 2 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:275:3: iri
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_iri_in_graphSubject1179);
                    iri83=iri();

                    state._fsp--;

                    adaptor.addChild(root_0, iri83.getTree());

                    }
                    break;
                case 3 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:276:3: blankNode
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_blankNode_in_graphSubject1185);
                    blankNode84=blankNode();

                    state._fsp--;

                    adaptor.addChild(root_0, blankNode84.getTree());

                    }
                    break;
                case 4 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:277:3: placeholder
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_placeholder_in_graphSubject1191);
                    placeholder85=placeholder();

                    state._fsp--;

                    adaptor.addChild(root_0, placeholder85.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "graphSubject"


    public static class graphPredicate_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "graphPredicate"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:280:1: graphPredicate : ( var | iri | abbr | placeholder );
    public final AntlrParser.graphPredicate_return graphPredicate() throws RecognitionException {
        AntlrParser.graphPredicate_return retval = new AntlrParser.graphPredicate_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        AntlrParser.var_return var86 =null;

        AntlrParser.iri_return iri87 =null;

        AntlrParser.abbr_return abbr88 =null;

        AntlrParser.placeholder_return placeholder89 =null;



        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:281:3: ( var | iri | abbr | placeholder )
            int alt24=4;
            switch ( input.LA(1) ) {
            case VAR1:
                {
                alt24=1;
                }
                break;
            case IRIREF:
            case PNAME_LN:
            case PNAME_NS:
                {
                alt24=2;
                }
                break;
            case 77:
                {
                alt24=3;
                }
                break;
            case VAR2:
                {
                alt24=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 24, 0, input);

                throw nvae;

            }

            switch (alt24) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:282:3: var
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_var_in_graphPredicate1208);
                    var86=var();

                    state._fsp--;

                    adaptor.addChild(root_0, var86.getTree());

                    }
                    break;
                case 2 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:283:3: iri
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_iri_in_graphPredicate1214);
                    iri87=iri();

                    state._fsp--;

                    adaptor.addChild(root_0, iri87.getTree());

                    }
                    break;
                case 3 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:284:3: abbr
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_abbr_in_graphPredicate1220);
                    abbr88=abbr();

                    state._fsp--;

                    adaptor.addChild(root_0, abbr88.getTree());

                    }
                    break;
                case 4 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:285:3: placeholder
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_placeholder_in_graphPredicate1226);
                    placeholder89=placeholder();

                    state._fsp--;

                    adaptor.addChild(root_0, placeholder89.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "graphPredicate"


    public static class graphObject_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "graphObject"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:288:1: graphObject : ( var | iri | literal | blankNode | placeholder );
    public final AntlrParser.graphObject_return graphObject() throws RecognitionException {
        AntlrParser.graphObject_return retval = new AntlrParser.graphObject_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        AntlrParser.var_return var90 =null;

        AntlrParser.iri_return iri91 =null;

        AntlrParser.literal_return literal92 =null;

        AntlrParser.blankNode_return blankNode93 =null;

        AntlrParser.placeholder_return placeholder94 =null;



        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:289:3: ( var | iri | literal | blankNode | placeholder )
            int alt25=5;
            switch ( input.LA(1) ) {
            case VAR1:
                {
                alt25=1;
                }
                break;
            case IRIREF:
            case PNAME_LN:
            case PNAME_NS:
                {
                alt25=2;
                }
                break;
            case 81:
                {
                alt25=3;
                }
                break;
            case BLANK_NODE_LABEL:
                {
                alt25=4;
                }
                break;
            case VAR2:
                {
                alt25=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 25, 0, input);

                throw nvae;

            }

            switch (alt25) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:290:3: var
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_var_in_graphObject1243);
                    var90=var();

                    state._fsp--;

                    adaptor.addChild(root_0, var90.getTree());

                    }
                    break;
                case 2 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:291:3: iri
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_iri_in_graphObject1249);
                    iri91=iri();

                    state._fsp--;

                    adaptor.addChild(root_0, iri91.getTree());

                    }
                    break;
                case 3 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:292:3: literal
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_literal_in_graphObject1255);
                    literal92=literal();

                    state._fsp--;

                    adaptor.addChild(root_0, literal92.getTree());

                    }
                    break;
                case 4 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:293:3: blankNode
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_blankNode_in_graphObject1261);
                    blankNode93=blankNode();

                    state._fsp--;

                    adaptor.addChild(root_0, blankNode93.getTree());

                    }
                    break;
                case 5 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:294:3: placeholder
                    {
                    root_0 = (Object)adaptor.nil();


                    pushFollow(FOLLOW_placeholder_in_graphObject1267);
                    placeholder94=placeholder();

                    state._fsp--;

                    adaptor.addChild(root_0, placeholder94.getTree());

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "graphObject"


    public static class var_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "var"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:297:1: var : VAR1 -> ^( AST_VAR VAR1 ) ;
    public final AntlrParser.var_return var() throws RecognitionException {
        AntlrParser.var_return retval = new AntlrParser.var_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token VAR195=null;

        Object VAR195_tree=null;
        RewriteRuleTokenStream stream_VAR1=new RewriteRuleTokenStream(adaptor,"token VAR1");

        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:298:3: ( VAR1 -> ^( AST_VAR VAR1 ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:299:3: VAR1
            {
            VAR195=(Token)match(input,VAR1,FOLLOW_VAR1_in_var1282);  
            stream_VAR1.add(VAR195);


            // AST REWRITE
            // elements: VAR1
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 300:3: -> ^( AST_VAR VAR1 )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:300:6: ^( AST_VAR VAR1 )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_VAR, "AST_VAR")
                , root_1);

                adaptor.addChild(root_1, 
                stream_VAR1.nextNode()
                );

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "var"


    public static class placeholder_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "placeholder"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:303:1: placeholder : VAR2 ( '.' JAVA_IDENTIFIER )? -> ^( AST_PLACE_HOLDER VAR2 ( JAVA_IDENTIFIER )? ) ;
    public final AntlrParser.placeholder_return placeholder() throws RecognitionException {
        AntlrParser.placeholder_return retval = new AntlrParser.placeholder_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token VAR296=null;
        Token char_literal97=null;
        Token JAVA_IDENTIFIER98=null;

        Object VAR296_tree=null;
        Object char_literal97_tree=null;
        Object JAVA_IDENTIFIER98_tree=null;
        RewriteRuleTokenStream stream_70=new RewriteRuleTokenStream(adaptor,"token 70");
        RewriteRuleTokenStream stream_VAR2=new RewriteRuleTokenStream(adaptor,"token VAR2");
        RewriteRuleTokenStream stream_JAVA_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token JAVA_IDENTIFIER");

        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:304:3: ( VAR2 ( '.' JAVA_IDENTIFIER )? -> ^( AST_PLACE_HOLDER VAR2 ( JAVA_IDENTIFIER )? ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:305:3: VAR2 ( '.' JAVA_IDENTIFIER )?
            {
            VAR296=(Token)match(input,VAR2,FOLLOW_VAR2_in_placeholder1309);  
            stream_VAR2.add(VAR296);


            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:305:8: ( '.' JAVA_IDENTIFIER )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==70) ) {
                int LA26_1 = input.LA(2);

                if ( (LA26_1==JAVA_IDENTIFIER) ) {
                    alt26=1;
                }
            }
            switch (alt26) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:305:9: '.' JAVA_IDENTIFIER
                    {
                    char_literal97=(Token)match(input,70,FOLLOW_70_in_placeholder1312);  
                    stream_70.add(char_literal97);


                    JAVA_IDENTIFIER98=(Token)match(input,JAVA_IDENTIFIER,FOLLOW_JAVA_IDENTIFIER_in_placeholder1314);  
                    stream_JAVA_IDENTIFIER.add(JAVA_IDENTIFIER98);


                    }
                    break;

            }


            // AST REWRITE
            // elements: JAVA_IDENTIFIER, VAR2
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 306:3: -> ^( AST_PLACE_HOLDER VAR2 ( JAVA_IDENTIFIER )? )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:306:6: ^( AST_PLACE_HOLDER VAR2 ( JAVA_IDENTIFIER )? )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_PLACE_HOLDER, "AST_PLACE_HOLDER")
                , root_1);

                adaptor.addChild(root_1, 
                stream_VAR2.nextNode()
                );

                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:306:30: ( JAVA_IDENTIFIER )?
                if ( stream_JAVA_IDENTIFIER.hasNext() ) {
                    adaptor.addChild(root_1, 
                    stream_JAVA_IDENTIFIER.nextNode()
                    );

                }
                stream_JAVA_IDENTIFIER.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "placeholder"


    public static class iri_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "iri"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:309:1: iri : ( IRIREF -> ^( AST_IRI_REF IRIREF ) | prefixedName -> prefixedName );
    public final AntlrParser.iri_return iri() throws RecognitionException {
        AntlrParser.iri_return retval = new AntlrParser.iri_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token IRIREF99=null;
        AntlrParser.prefixedName_return prefixedName100 =null;


        Object IRIREF99_tree=null;
        RewriteRuleTokenStream stream_IRIREF=new RewriteRuleTokenStream(adaptor,"token IRIREF");
        RewriteRuleSubtreeStream stream_prefixedName=new RewriteRuleSubtreeStream(adaptor,"rule prefixedName");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:310:3: ( IRIREF -> ^( AST_IRI_REF IRIREF ) | prefixedName -> prefixedName )
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==IRIREF) ) {
                alt27=1;
            }
            else if ( ((LA27_0 >= PNAME_LN && LA27_0 <= PNAME_NS)) ) {
                alt27=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 27, 0, input);

                throw nvae;

            }
            switch (alt27) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:311:3: IRIREF
                    {
                    IRIREF99=(Token)match(input,IRIREF,FOLLOW_IRIREF_in_iri1346);  
                    stream_IRIREF.add(IRIREF99);


                    // AST REWRITE
                    // elements: IRIREF
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 312:3: -> ^( AST_IRI_REF IRIREF )
                    {
                        // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:312:6: ^( AST_IRI_REF IRIREF )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(AST_IRI_REF, "AST_IRI_REF")
                        , root_1);

                        adaptor.addChild(root_1, 
                        stream_IRIREF.nextNode()
                        );

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;
                case 2 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:313:3: prefixedName
                    {
                    pushFollow(FOLLOW_prefixedName_in_iri1361);
                    prefixedName100=prefixedName();

                    state._fsp--;

                    stream_prefixedName.add(prefixedName100.getTree());

                    // AST REWRITE
                    // elements: prefixedName
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 314:3: -> prefixedName
                    {
                        adaptor.addChild(root_0, stream_prefixedName.nextTree());

                    }


                    retval.tree = root_0;

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "iri"


    public static class literal_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "literal"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:317:1: literal : 'literal' ;
    public final AntlrParser.literal_return literal() throws RecognitionException {
        AntlrParser.literal_return retval = new AntlrParser.literal_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal101=null;

        Object string_literal101_tree=null;

        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:318:3: ( 'literal' )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:319:3: 'literal'
            {
            root_0 = (Object)adaptor.nil();


            string_literal101=(Token)match(input,81,FOLLOW_81_in_literal1384); 
            string_literal101_tree = 
            (Object)adaptor.create(string_literal101)
            ;
            adaptor.addChild(root_0, string_literal101_tree);


            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "literal"


    public static class blankNode_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "blankNode"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:322:1: blankNode : BLANK_NODE_LABEL -> ^( AST_BLANK_NODE BLANK_NODE_LABEL ) ;
    public final AntlrParser.blankNode_return blankNode() throws RecognitionException {
        AntlrParser.blankNode_return retval = new AntlrParser.blankNode_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token BLANK_NODE_LABEL102=null;

        Object BLANK_NODE_LABEL102_tree=null;
        RewriteRuleTokenStream stream_BLANK_NODE_LABEL=new RewriteRuleTokenStream(adaptor,"token BLANK_NODE_LABEL");

        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:323:3: ( BLANK_NODE_LABEL -> ^( AST_BLANK_NODE BLANK_NODE_LABEL ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:324:3: BLANK_NODE_LABEL
            {
            BLANK_NODE_LABEL102=(Token)match(input,BLANK_NODE_LABEL,FOLLOW_BLANK_NODE_LABEL_in_blankNode1401);  
            stream_BLANK_NODE_LABEL.add(BLANK_NODE_LABEL102);


            // AST REWRITE
            // elements: BLANK_NODE_LABEL
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 325:3: -> ^( AST_BLANK_NODE BLANK_NODE_LABEL )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:325:6: ^( AST_BLANK_NODE BLANK_NODE_LABEL )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_BLANK_NODE, "AST_BLANK_NODE")
                , root_1);

                adaptor.addChild(root_1, 
                stream_BLANK_NODE_LABEL.nextNode()
                );

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "blankNode"


    public static class prefixedName_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "prefixedName"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:328:1: prefixedName : ( PNAME_LN -> ^( AST_PREFIXED_NAME PNAME_LN ) |pn= PNAME_NS -> ^( AST_PREFIXED_NAME PNAME_NS ) );
    public final AntlrParser.prefixedName_return prefixedName() throws RecognitionException {
        AntlrParser.prefixedName_return retval = new AntlrParser.prefixedName_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token pn=null;
        Token PNAME_LN103=null;

        Object pn_tree=null;
        Object PNAME_LN103_tree=null;
        RewriteRuleTokenStream stream_PNAME_NS=new RewriteRuleTokenStream(adaptor,"token PNAME_NS");
        RewriteRuleTokenStream stream_PNAME_LN=new RewriteRuleTokenStream(adaptor,"token PNAME_LN");

        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:329:3: ( PNAME_LN -> ^( AST_PREFIXED_NAME PNAME_LN ) |pn= PNAME_NS -> ^( AST_PREFIXED_NAME PNAME_NS ) )
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==PNAME_LN) ) {
                alt28=1;
            }
            else if ( (LA28_0==PNAME_NS) ) {
                alt28=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 28, 0, input);

                throw nvae;

            }
            switch (alt28) {
                case 1 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:330:3: PNAME_LN
                    {
                    PNAME_LN103=(Token)match(input,PNAME_LN,FOLLOW_PNAME_LN_in_prefixedName1428);  
                    stream_PNAME_LN.add(PNAME_LN103);


                    // AST REWRITE
                    // elements: PNAME_LN
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 331:3: -> ^( AST_PREFIXED_NAME PNAME_LN )
                    {
                        // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:331:6: ^( AST_PREFIXED_NAME PNAME_LN )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(AST_PREFIXED_NAME, "AST_PREFIXED_NAME")
                        , root_1);

                        adaptor.addChild(root_1, 
                        stream_PNAME_LN.nextNode()
                        );

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;
                case 2 :
                    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:333:3: pn= PNAME_NS
                    {
                    pn=(Token)match(input,PNAME_NS,FOLLOW_PNAME_NS_in_prefixedName1449);  
                    stream_PNAME_NS.add(pn);


                    // AST REWRITE
                    // elements: PNAME_NS
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (Object)adaptor.nil();
                    // 334:3: -> ^( AST_PREFIXED_NAME PNAME_NS )
                    {
                        // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:334:6: ^( AST_PREFIXED_NAME PNAME_NS )
                        {
                        Object root_1 = (Object)adaptor.nil();
                        root_1 = (Object)adaptor.becomeRoot(
                        (Object)adaptor.create(AST_PREFIXED_NAME, "AST_PREFIXED_NAME")
                        , root_1);

                        adaptor.addChild(root_1, 
                        stream_PNAME_NS.nextNode()
                        );

                        adaptor.addChild(root_0, root_1);
                        }

                    }


                    retval.tree = root_0;

                    }
                    break;

            }
            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "prefixedName"


    public static class abbr_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "abbr"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:337:1: abbr : 'a' -> ^( AST_ABBR 'a' ) ;
    public final AntlrParser.abbr_return abbr() throws RecognitionException {
        AntlrParser.abbr_return retval = new AntlrParser.abbr_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token char_literal104=null;

        Object char_literal104_tree=null;
        RewriteRuleTokenStream stream_77=new RewriteRuleTokenStream(adaptor,"token 77");

        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:338:3: ( 'a' -> ^( AST_ABBR 'a' ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:339:3: 'a'
            {
            char_literal104=(Token)match(input,77,FOLLOW_77_in_abbr1476);  
            stream_77.add(char_literal104);


            // AST REWRITE
            // elements: 77
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 340:3: -> ^( AST_ABBR 'a' )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:340:6: ^( AST_ABBR 'a' )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_ABBR, "AST_ABBR")
                , root_1);

                adaptor.addChild(root_1, 
                stream_77.nextNode()
                );

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "abbr"


    public static class whereClause_return extends ParserRuleReturnScope {
        Object tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "whereClause"
    // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:343:1: whereClause : 'where' '=' graph -> ^( AST_WHERE_CLAUSE graph ) ;
    public final AntlrParser.whereClause_return whereClause() throws RecognitionException {
        AntlrParser.whereClause_return retval = new AntlrParser.whereClause_return();
        retval.start = input.LT(1);


        Object root_0 = null;

        Token string_literal105=null;
        Token char_literal106=null;
        AntlrParser.graph_return graph107 =null;


        Object string_literal105_tree=null;
        Object char_literal106_tree=null;
        RewriteRuleTokenStream stream_72=new RewriteRuleTokenStream(adaptor,"token 72");
        RewriteRuleTokenStream stream_86=new RewriteRuleTokenStream(adaptor,"token 86");
        RewriteRuleSubtreeStream stream_graph=new RewriteRuleSubtreeStream(adaptor,"rule graph");
        try {
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:344:3: ( 'where' '=' graph -> ^( AST_WHERE_CLAUSE graph ) )
            // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:345:3: 'where' '=' graph
            {
            string_literal105=(Token)match(input,86,FOLLOW_86_in_whereClause1501);  
            stream_86.add(string_literal105);


            char_literal106=(Token)match(input,72,FOLLOW_72_in_whereClause1503);  
            stream_72.add(char_literal106);


            pushFollow(FOLLOW_graph_in_whereClause1505);
            graph107=graph();

            state._fsp--;

            stream_graph.add(graph107.getTree());

            // AST REWRITE
            // elements: graph
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (Object)adaptor.nil();
            // 346:3: -> ^( AST_WHERE_CLAUSE graph )
            {
                // /home/manuel/workspace/coda/CODA_Parser_ANTLR/src/main/java/it/uniroma2/art/coda/pearl/parser/antlr/Antlr.g:346:6: ^( AST_WHERE_CLAUSE graph )
                {
                Object root_1 = (Object)adaptor.nil();
                root_1 = (Object)adaptor.becomeRoot(
                (Object)adaptor.create(AST_WHERE_CLAUSE, "AST_WHERE_CLAUSE")
                , root_1);

                adaptor.addChild(root_1, stream_graph.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

            retval.stop = input.LT(-1);


            retval.tree = (Object)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
    	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);

        }

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "whereClause"

    // Delegated rules


 

    public static final BitSet FOLLOW_prologue_in_pearlUnit261 = new BitSet(new long[]{0x0000000000000000L,0x0000000000110000L});
    public static final BitSet FOLLOW_rules_in_pearlUnit263 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_prefixDecl_in_prologue292 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
    public static final BitSet FOLLOW_83_in_prefixDecl322 = new BitSet(new long[]{0x0080000000000000L});
    public static final BitSet FOLLOW_PNAME_NS_in_prefixDecl324 = new BitSet(new long[]{0x0000200000000000L});
    public static final BitSet FOLLOW_IRIREF_in_prefixDecl326 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule_in_rules356 = new BitSet(new long[]{0x0000000000000002L,0x0000000000110000L});
    public static final BitSet FOLLOW_lazyRule_in_rules360 = new BitSet(new long[]{0x0000000000000002L,0x0000000000110000L});
    public static final BitSet FOLLOW_84_in_rule389 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_uimaTypeName_in_rule391 = new BitSet(new long[]{0x4000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_ruleId_in_rule393 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_87_in_rule395 = new BitSet(new long[]{0x0000000000000000L,0x000000000144C000L});
    public static final BitSet FOLLOW_bindingsClause_in_rule401 = new BitSet(new long[]{0x0000000000000000L,0x0000000001448000L});
    public static final BitSet FOLLOW_nodesClause_in_rule408 = new BitSet(new long[]{0x0000000000000000L,0x0000000001408000L});
    public static final BitSet FOLLOW_graphClause_in_rule415 = new BitSet(new long[]{0x0000000000000000L,0x0000000001400000L});
    public static final BitSet FOLLOW_whereClause_in_rule422 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
    public static final BitSet FOLLOW_88_in_rule427 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_lazyRule476 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
    public static final BitSet FOLLOW_84_in_lazyRule478 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_uimaTypeName_in_lazyRule480 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_ruleId_in_lazyRule482 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_87_in_lazyRule484 = new BitSet(new long[]{0x0000000000000000L,0x0000000001040000L});
    public static final BitSet FOLLOW_nodesClause_in_lazyRule490 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
    public static final BitSet FOLLOW_88_in_lazyRule495 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_javaQualifiedName_in_uimaTypeName532 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_78_in_bindingsClause557 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_72_in_bindingsClause559 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_87_in_bindingsClause561 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_bindingDef_in_bindingsClause567 = new BitSet(new long[]{0x0000400000000000L,0x0000000001000000L});
    public static final BitSet FOLLOW_88_in_bindingsClause572 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_JAVA_IDENTIFIER_in_bindingDef600 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_featurePath_in_bindingDef602 = new BitSet(new long[]{0x4000000000000000L});
    public static final BitSet FOLLOW_ruleId_in_bindingDef604 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleId636 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_82_in_nodesClause670 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_72_in_nodesClause672 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_87_in_nodesClause674 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_nodeDef_in_nodesClause680 = new BitSet(new long[]{0x0000400000000000L,0x0000000001000000L});
    public static final BitSet FOLLOW_88_in_nodesClause685 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_JAVA_IDENTIFIER_in_nodeDef713 = new BitSet(new long[]{0x0000000000000000L,0x0000000000220000L});
    public static final BitSet FOLLOW_projectionOperator_in_nodeDef715 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_featurePath_in_nodeDef717 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_85_in_projectionOperator748 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
    public static final BitSet FOLLOW_converters_in_projectionOperator750 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_81_in_projectionOperator772 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_76_in_projectionOperator774 = new BitSet(new long[]{0x00C0200000000000L});
    public static final BitSet FOLLOW_iri_in_projectionOperator776 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
    public static final BitSet FOLLOW_converters_in_projectionOperator778 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_81_in_projectionOperator807 = new BitSet(new long[]{0x0002000000000000L});
    public static final BitSet FOLLOW_LANGTAG_in_projectionOperator809 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
    public static final BitSet FOLLOW_converters_in_projectionOperator812 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_81_in_projectionOperator840 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
    public static final BitSet FOLLOW_converters_in_projectionOperator842 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_converters874 = new BitSet(new long[]{0x00C0200000000000L});
    public static final BitSet FOLLOW_iri_in_converters876 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000030L});
    public static final BitSet FOLLOW_69_in_converters879 = new BitSet(new long[]{0x00C0200000000000L});
    public static final BitSet FOLLOW_iri_in_converters881 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000030L});
    public static final BitSet FOLLOW_68_in_converters885 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_featurePathElement_in_featurePath911 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_71_in_featurePath914 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_featurePathElement_in_featurePath916 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_JAVA_IDENTIFIER_in_featurePathElement944 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000400L});
    public static final BitSet FOLLOW_74_in_featurePathElement947 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_INTEGER_in_featurePathElement949 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_75_in_featurePathElement951 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_79_in_graphClause981 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_72_in_graphClause983 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_graph_in_graphClause985 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_JAVA_IDENTIFIER_in_javaQualifiedName1011 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L});
    public static final BitSet FOLLOW_70_in_javaQualifiedName1014 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_JAVA_IDENTIFIER_in_javaQualifiedName1016 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L});
    public static final BitSet FOLLOW_87_in_graph1044 = new BitSet(new long[]{0x80C0220000000000L,0x0000000000000201L});
    public static final BitSet FOLLOW_graphElement_in_graph1048 = new BitSet(new long[]{0x80C0220000000000L,0x0000000001000201L});
    public static final BitSet FOLLOW_88_in_graph1053 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_graphTriple_in_graphElement1081 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_optionalGraphElement_in_graphElement1085 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_73_in_optionalGraphElement1102 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_87_in_optionalGraphElement1104 = new BitSet(new long[]{0x80C0220000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_graphTriple_in_optionalGraphElement1106 = new BitSet(new long[]{0x80C0220000000000L,0x0000000001000001L});
    public static final BitSet FOLLOW_88_in_optionalGraphElement1109 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_graphSubject_in_graphTriple1136 = new BitSet(new long[]{0x80C0200000000000L,0x0000000000002001L});
    public static final BitSet FOLLOW_graphPredicate_in_graphTriple1138 = new BitSet(new long[]{0x80C0220000000000L,0x0000000000020001L});
    public static final BitSet FOLLOW_graphObject_in_graphTriple1140 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_70_in_graphTriple1142 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_var_in_graphSubject1173 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_iri_in_graphSubject1179 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_blankNode_in_graphSubject1185 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_placeholder_in_graphSubject1191 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_var_in_graphPredicate1208 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_iri_in_graphPredicate1214 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_abbr_in_graphPredicate1220 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_placeholder_in_graphPredicate1226 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_var_in_graphObject1243 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_iri_in_graphObject1249 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_literal_in_graphObject1255 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_blankNode_in_graphObject1261 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_placeholder_in_graphObject1267 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VAR1_in_var1282 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VAR2_in_placeholder1309 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L});
    public static final BitSet FOLLOW_70_in_placeholder1312 = new BitSet(new long[]{0x0000400000000000L});
    public static final BitSet FOLLOW_JAVA_IDENTIFIER_in_placeholder1314 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IRIREF_in_iri1346 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_prefixedName_in_iri1361 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_81_in_literal1384 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_BLANK_NODE_LABEL_in_blankNode1401 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PNAME_LN_in_prefixedName1428 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PNAME_NS_in_prefixedName1449 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_77_in_abbr1476 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_86_in_whereClause1501 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_72_in_whereClause1503 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_graph_in_whereClause1505 = new BitSet(new long[]{0x0000000000000002L});

}